/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uy.edu.ort.publicar.servicios;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Properties;
import uy.edu.ort.dominio.ListaTopicos;

/**
 *
 * @author Usuario
 */
public class ManejoArchivos {
    
    public String ObtenerDestinationTopico(String topico){
        
        Properties prop = this.obtenerArchivoProperties();
        String ruta = prop.getProperty("rutaTopicos");
        System.out.println("La ruta de Topicos es: " + ruta);
        String salida = "";
        System.out.println("El topico recibido es: " + topico);
        
        try{
            // Abrimos el archivo
            FileInputStream fstream = new FileInputStream(ruta);
            // Creamos el objeto de entrada
            DataInputStream entrada = new DataInputStream(fstream);
            // Creamos el Buffer de Lectura
            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
            String strLinea;
            // Leer el archivo linea por linea
            boolean encontreTopico = false;
            while ((strLinea = buffer.readLine()) != null && !encontreTopico)   {
                // Imprimimos la línea por pantalla
                String[] lista;
                String cadena = strLinea;
                lista = cadena.split("=");
                if (lista[0].toString().equals(topico)){
                    salida = lista[1].toString();
                    System.out.println("El detination levantado es: " + salida);
                    encontreTopico = true;
                }
            }
            //Imprimo la lista de topiocos
            //System.out.println("La lista luego de hacer el split " + salida);
            
            // Cerramos el archivo
            entrada.close();
        }catch (Exception e){ //Catch de excepciones
            System.err.println("Ocurrio un error: " + e.getMessage());
        }
        return salida;
    }
    
    public ListaTopicos CargarTopicoDeArchivo(){
        
        Properties prop = this.obtenerArchivoProperties();
        String ruta = prop.getProperty("rutaTopicos");
        System.out.println("La ruta de Topicos es: " + ruta);
        ListaTopicos salida = new ListaTopicos();
        try{
            // Abrimos el archivo
            FileInputStream fstream = new FileInputStream(ruta);
            // Creamos el objeto de entrada
            DataInputStream entrada = new DataInputStream(fstream);
            // Creamos el Buffer de Lectura
            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
            String strLinea;
            // Leer el archivo linea por linea
            while ((strLinea = buffer.readLine()) != null)   {
                // Imprimimos la línea por pantalla
                String[] lista;
                String cadena = strLinea;
                lista = cadena.split("=");
               
//                for (int i=0; i< lista.length ; i++){
//                    salida.addLista(lista[i].toString());
//                }
                salida.addLista(lista[0].toString());
            }
            //Imprimo la lista de topiocos
            //System.out.println("La lista luego de hacer el split " + salida);
            
            // Cerramos el archivo
            entrada.close();
        }catch (Exception e){ //Catch de excepciones
            System.err.println("Ocurrio un error: " + e.getMessage());
        }
        return salida;
    }
    
    public boolean ExisteFuenteEnArchivo(String idFuente, String codFuente)
    {
        boolean existe = false;
        Properties prop = this.obtenerArchivoProperties();        
        String ruta = prop.getProperty("rutaFuentes");
        System.out.println("La ruta de Fuentes es: " + ruta);
        try{
            // Abrimos el archivo
            FileInputStream fstream = new FileInputStream(ruta);
            // Creamos el objeto de entrada
            DataInputStream entrada = new DataInputStream(fstream);
            // Creamos el Buffer de Lectura
            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
            String strLinea;
            // Leer el archivo linea por linea
            while ((strLinea = buffer.readLine()) != null)   {
                // Imprimimos la línea por pantalla
                String[] lista;
                String cadena = strLinea;
                lista = cadena.split(";");
                String idLinea = lista[0];
                String codLinea = lista[1];
                if (idLinea.equals(idFuente) && codLinea.equals(codFuente))
                {
                    existe = true;
                }
            }
            //Imprimo si existe la fuente
            System.out.println("La fuente existe?: " + existe);
            
            // Cerramos el archivo
            entrada.close();
        }catch (Exception e){ //Catch de excepciones
            System.err.println("Ocurrio un error: " + e.getMessage());
        }
        
        return existe;
    }
    
        
    public Properties obtenerArchivoProperties ()
    {
        
        try {
            // TODO code application logic here
            //InputStream in = ManejoArchivos.class.getResourceAsStream("config.properties");
            URL path = ManejoArchivos.class.getResource("config.properties");
            FileInputStream file = new FileInputStream(path.getFile());
            Properties props = new Properties();
            System.out.println("ruta config.properties: "+path.toString());
//            props.load(new FileInputStream(path.toString()));
            props.load(file);
            
            if (!props.isEmpty()) 
            {                
                return props;
            } else {//sino  retornara NULL
                return null;
            }
            
            
            
        } catch (IOException ex) {
            System.out.println("Error: "+ex);
            return null;
        }
    }
}
